前面分享了類別與物件間的關係,當物件要設定初始屬性時,可以使用「建構子」(Constructors)。
位於類別中的物件本身如果沒有設定建構子,它才會自動產生基本的(不會出現在程式碼中,沒有做任何事)。通常Constructor我們會用來設定物件的初始內容,配合關鍵字new
使用且建構子名稱必須與類別名稱相同 :
像是我們之前介紹過關於物件的設定辦法,最後一個關鍵字我們是說它是類別名稱,其實是用來設定初值的建構子。其中又可細分成兩種,是否有傳入引數。綜合以上,可以將其分為3大類、4個特性 :
下面針對有無引數傳入之建構子概念,做分別介紹。
/*Default*/
public class Main{
String name;
int grade;
char gpa;
/*public Main(){ //系統預設
}*/
}
/*Constructor(NULL)*/
public class Main{
String name;
int grade;
char gpa;
public Main(){ //自行設定
}
}
設定建構子的定義會是 :
(Modifier) class_name((argument)){
//Command
}
public class Main{
String name;
int grade;
char gpa;
public Main(){
name = "CHI";
grade = 82;
gpa = 'A';
}
void printout(){
System.out.println("Your personal information ");
}
public static void main(String[] args){
Main newobj = new Main();
newobj.printout();
System.out.println("Student name : " + newobj.name);
System.out.println("Final test : " + newobj.grade);
System.out.println("GPA : " + newobj.gpa);
}
}
接著我們將上面程式改成運用函數傳入的形式,並介紹新關鍵字this
public class Main{
String name;
int grade;
char gpa;
public Main(String name, int grade, char gpa){
this.name = name;
this.grade = grade;
this.gpa = gpa;
}
void printout(){
System.out.println("Your personal information");
}
public static void main(String[] args){
Main newobj = new Main("Chi", 82, A);
newobj.printout();
System.out.println("Student name : " + newobj.name);
System.out.println("Final test : " + newobj.grade);
System.out.println("GPA : " + newobj.gpa);
}
}
輸出結果 :
this
意旨指向最近的物件,所以當我們使用時,它會指到根據建構子被建立的物件名稱上,並將上述之名字成績等元素繼承到這個物件中。以上內容若有錯誤,煩請不吝嗇指教!!!謝謝您!!!